home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 0188.ZIP / ITRMSAVE.INC < prev    next >
Text File  |  1985-02-20  |  2KB  |  73 lines

  1. procedure InitSaveFile;
  2. label
  3.      99;
  4. var
  5.    s : string[14];
  6.    result : integer;
  7. begin
  8.      if not SaveOpen then
  9.      begin
  10.           writeln;
  11.           write('Name of file to hold saved text: ');
  12.           readln(s);
  13.           if length(s) = 0 then
  14.           begin
  15.                writeln('ITERM --- text save aborted.');
  16.                goto 99
  17.           end;
  18.           {$I-}
  19.           assign(SaveFile, s);
  20.           reset(SaveFile);
  21.           result := IOresult;
  22.           case result of
  23.                0 : {existing file open ok}
  24.                    begin
  25.                         writeln('ITERM --- appending text to ',s);
  26.                         SaveOpen := TRUE;
  27.                         seek(SaveFile, FileSize(SaveFile))
  28.                    end;
  29.              1,2 : {file does not exist, need to create it}
  30.                    begin
  31.                         writeln('ITERM --- creating ', s);
  32.                         SaveOpen := TRUE;
  33.                         rewrite(SaveFile)
  34.                    end;
  35.              $F1 : {illegal file name or disk full}
  36.                    writeln('ITERM --- text save aborted. ', s, ' is not a useable file name.');
  37.             else   {unresolved error -- just report it}
  38.                    writeln('ITERM --- I/O error number ', result:2,' on  ',s);
  39.                    writeln('          Text save aborted.')
  40.           end;
  41.           {$I+}
  42. 99: {exit point if no file name}
  43.           if (not (result in [0..2])) or (length(s) = 0) then
  44.           begin
  45.                SaveText := 0;
  46.                Status(3,'Text save: OFF')
  47.           end
  48.      end;
  49. end;
  50.  
  51. procedure DiskBuffer(c : char);
  52. {maintain a file of text from remote session as it appears on the screen}
  53. begin
  54.    if SaveOpen then
  55.    begin
  56.      if SavePtr <= SAVE_BUF_SIZE then
  57.      begin
  58.         SaveBuffer[SavePtr] := c;
  59.         SavePtr := succ(SavePtr)
  60.      end
  61.      else
  62.      begin
  63.           send(ord(^S)); {x-off}
  64.           for SavePtr := 1 to SAVE_BUF_SIZE do
  65.               write(SaveFile, SaveBuffer[SavePtr]);
  66.           SavePtr := 1;
  67.           SaveBuffer[SavePtr] := c;
  68.           SavePtr := succ(SavePtr);
  69.           send(ord(^Q)) {x-on}
  70.      end
  71.    end
  72. end;
  73.